package nusar

class AlumnoController {

	def beforeInterceptor = [action:this.&autenticar]
	static defaultAction = "principal"

	
	def autenticar(){
	
		// Parametros: El correo y password se reciben de login.gsp
		def correo
		def password
			
		// Conectarse con la BD de la UABC para comprobar que el correo existe (PENDIENTE)
		
		// Si existen, se obtiene la matricula del alumno(Base de datos UABC)
		def matricula
		
		// Se crea una sesion (session.user) y se direcciona a la vista principal.gsp
	
		// En caso de que no exista o no coincidan, mostrar un mensaje de error
	}
	
	
	// Boton Salir, Vista Principal
	def logout(){
		
		// Se invalida la sesion
		
		// Se regresa a la pantalla de login
	}
	
	
	def principal(){
		
		// Obtener el objecto Alumno mediante la matricula para acceder a su informacion
		Alumno infoAlumno
		infoAlumno=Alumno.get(194347);
		
		// Obtener las materias que cursa el alumno con sus horarios (Carga academica)
		def horarioAlumno
		
		// Obtenemos la solicitud del alumno
		def solicitud
		
		if(infoAlumno){
			
			horarioAlumno=infoAlumno.materias
			
			solicitud=Solicitud.findByAlumno(infoAlumno)
		}						

		
		// Si la solicitud ya se creo y esta en estado de Borrador, valor = display:none
		// En caso contrario, valor = ""
		String botonAceptar
		
		// Si el estado de la solicitud esta en Pendiente, valor = display:none
		// En caso contrario, valor = ""
		String mensajePendiente
		
		[infoAlumno: infoAlumno, 
		 horarioAlumno: horarioAlumno, 
		 solicitud: solicitud, 
		 botonAceptar: botonAceptar,
		 mensajePendiente: mensajePendiente]
	}
	
	
	def crearSolicitud(){
		
		
		// Informacion sobre todas las materias disponibles y sus horarios (no cursadas por alumno)
		def materias_horario = Materia.list()

		// Obtener las materias que cursa el alumno con sus horarios (Carga academica)
		def horarioAlumno = Alumno.list()
		
		// Calcular los vacantes para cada materia (Numero de lugares disponibles)
		// Vacantes = Cupo - Alumnos cursando la materia
		def vacantes = []
		
		[materias_horario: materias_horario, horarioAlumno: horarioAlumno, vacantes: vacantes]

	}

	
	def guardarMaterias(){
		
		// Parametros: Los ids de las materias se obtienen de crearSolicitud.gsp
		def idMaterias = []
		
		// Parametros: Tipo de peticion por materia (Alta o Baja)
		def tiposPeticiones = []
		
		// Verificar que no se cuente con una solicitud en estado Pendiente
		// En este caso, ya no se puede modificar la solicitud
		
		// Verificar que el alumno no haya enviado dos solicitudes
		
		// Si no esta registrada la solicitud en la BD, crear una con estado de "Borrador"
		
		// Verificar que haya al menos una materia seleccionada
		
		
		// En caso de ser alta:
		// Verificar que el alumno no este cursando una materia con el mismo nombre
		// Checar que la materia no se traslape con el horario del alumno
		
		// Verificar que (Materias Cursadas + Altas - Bajas <= 8)
		
		
		// Guardar las materias en la tabla Solicitud_Materias con el estado de "Pendiente"

		// Regresar a la pantalla principal
		
	}
	
	
	def aceptarSolicitud(){
		
		// Verificar que el usuario haya seleccionado su estados de reinscripcion
		// Si no, mostrar mensaje de error
		
		
		// Mostrar pop-up de confirmacion de solicitud
	}
	 
	def confirmarSolicitud(){
		
		
		// Se cambia el estado de la solicitud a "Pendiente"
		
		// Se incrementa el numero de solicitudes enviadas por el alumno (Alumno.solicitudesEnviadas)
	}
	
	
	def eliminarMateriaSolicitud(){
		
		// Eliminamos la peticion
		def peticion = Solicitud_Materias.get(params.id)
		peticion.delete();
		
		def solicitud = Solicitud.findByAlumnoAndEstado(Alumno.get(194347), "Borrador")
		
		// Eliminamos las dependencias
		solicitud.peticiones.remove(peticion)
		
		render(template: "listS", model : [solicitud:solicitud])
		
	}
}
